public class code2 {
    // 跳跃游戏 II
    public int jump(int[] nums) {
        // 解法一：“贪心” 解决
        // 可以先记录下数组中的最后一个位置
        // 之后从前向后找，先找到一个能够一步跳到最后位置的元素
        // 之后更新当前的最后一个标记位
        int flag = nums.length - 1;
        // 定义一个记录跳跃步骤的返回数据
        int re = 0;

        // 需要注意的是，这里是要以 flag 位最后边界值的
        // 这里需要进行 while 循环保证多次调整边界值，知道边界值到达数组头部
        while (flag > 0) {
            // flag 值最终还会不断更新
            for (int i = 0; i < flag; i++) {
                // 当，当前下标中的值 + 当前的下标
                // 能够达到 flag 位置处，此时表明找到了能到 flag 位置的 最大“起跳点”
                if (nums[i] + i >= flag) {
                    // 此时更新 flag 边界值
                    flag = i;
                    // 此时记录一次跳跃动作
                    re++;
                    // 需要跳出本次循环，因为 flag 已经更新，需要进行新的 for 循环
                    break;
                }
            }
        }
        return re;
    }
}
